This is a circuit for using error diffusion to convert gray scale pixels into binary or halftone dots, and more specifically describes a circuit for using error diffusion in a plurality of parallel circuits to increase the throughput.
Whenever there is a conversion of gray scale pixels from one number of bits to another, or the conversion from gray scale to halftone, the conversion of each pixel typically results in the new pixel value and a residual error term. This error term can either be discarded, in which case valuable data is lost, or the error term can be added to other pixels prior to their conversion step. Ideally, the error term should be added to all of the surrounding pixels, although in actual practice, all of the pixels are not available. For example, the error term can not be added to the previous pixel on the same line, or to the pixels on the line above, or to any other pixel that has already been converted. Thus, the error term can be added only to the next pixel on the same line, and the three adjacent pixels on the next line.
Since the error term must be split among four pixels, some ratio of apportionment must be predetermined. One known set of ratios is 7/16 of the error added to the value of the next pixel, and 3/16, 5/16 and 1/16 added to the three adjacent pixels on the next line, from left to right, as shown in FIG. 5. On each line, the process is to convert the current pixel during one cycle time to produce an output pixel and one error term which can be used to process the next pixel in the same line and three error terms for the next line, Although the term for the next pixel on the same line can be used immediately, the three terms for the next line must be stored in memory until the next line is converted. The resultant line-by-line processing, including memory reads and stores, is a time consuming process.